//
//  THWelcomeView.swift
//  Practise
//
//  Created by flower on 2017/9/7.
//  Copyright © 2017年 lalala. All rights reserved.
//

import UIKit
import SDWebImage

/// 欢迎视图
class THWelcomeView: UIView {
    
    @IBOutlet weak var iconView: UIImageView!
    @IBOutlet weak var tipLabel: UILabel!
    @IBOutlet weak var bottomCons: NSLayoutConstraint!
    
    //使用 Xib 加载欢迎视图
    class func welcomeView() -> THWelcomeView {
        let nib = UINib(nibName: "THWelcomeView", bundle: nil)
        
        let v = nib.instantiate(withOwner: nil, options: nil)[0] as! THWelcomeView
        
        // 从 XIB 中加载视图  默认是 600 * 600
        v.frame = UIScreen.main.bounds
        
        return v
        
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        
        // 提示: initWithCoder 只是刚刚从 XIB 的二进制文件将视图加载完成
        // 还没有和代码连线建立起关系, 所以开发时, 千万不要在这个方法中处理UI
        print("initWithCoder + \(iconView)")
    }
    
    // 从 XIB 加载完成调用
    override func awakeFromNib() {
        
        // 1. url
        guard let urlString = THNetworkManager.shared.userAccount.avatar_large,
            let url = URL(string: urlString) else {
            
            return
        }
        
        // 2. 设置头像 - 如果网络图像没有下载完成, 先显示展位图像
        // 如果指定占位图像, 之前设置的图像会被清空!
        iconView.sd_setImage(with: url, placeholderImage: UIImage(named:"avatar_default_big"))
        
        // 3. FIXME: - 设置圆角 (iconView 的 bounds 还没有呢) => 改为 iconWidthCons * 0.5
        iconView.layer.cornerRadius = iconView.bounds.width * 0.5
        iconView.layer.masksToBounds = true
    }
    
    /// 视图被添加到 window 上, 表示视图已经显示
    override func didMoveToWindow() {
        super.didMoveToWindow()
        
        // 视图是使用自动布局来设置的, 只是设置了约束
        // - 当视图被添加到窗口上时, 根据父视图的大小, 计算约束值, 更新控件位置
        // - layoutIfNeed 会直接按照当前得到约束直接更新控件位置
        // - 执行之后, 控制所在位置, 就是 XIB 中布局的位置
        self.layoutIfNeeded()
        
        bottomCons.constant = bounds.size.height - 200
        
        // 如果控件们的 frame 还没有计算好! 所有的约束会一起动画
        UIView.animate(withDuration: 1.0,
                       delay: 0,
                       usingSpringWithDamping: 0.7,
                       initialSpringVelocity: 0,
                       options: [],
                       animations: {
                        
                        // 更新约束
                        self.layoutIfNeeded()
        }) { (_) in
            
            UIView.animate(withDuration: 1.0, animations: { 
                self.tipLabel.alpha = 1
            }, completion: { (_) in
                    self.removeFromSuperview()
            })
        }
        
    }

//    override init(frame: CGRect) {
//        super.init(frame: frame)
//        
//        backgroundColor = UIColor.blue
//    }
//    
//    required init?(coder aDecoder: NSCoder) {
//        fatalError("init(coder:) has not been implemented")
//    }

}
